package org.erp.product.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.erp.common.enums.DeviceInventoryEvent;
import org.erp.common.page.PageQueryModel;
import org.erp.product.domain.dto.*;
import org.erp.product.domain.entity.ConnectLog;
import org.erp.product.domain.entity.ProductInfo;
import org.erp.product.domain.entity.RepairInfo;
import org.erp.product.domain.vo.ConnectLogVo;
import org.erp.product.infrastructure.enums.ConnectEventEnum;
import org.erp.product.infrastructure.enums.InspectionStatusEnum;
import org.erp.product.infrastructure.enums.RepairStatusEnum;

import java.util.List;

/**
 * 接驳记录服务层
 *
 * @author libin
 * @version 1.0
 * @description: 接驳记录服务层
 * @date 2025/11/13 16:09
 **/
public interface ConnectLogService extends IService<ConnectLog> {

    PageQueryModel<ConnectLogVo> pageList(ConnectLogQueryDto connectLogQueryDto);

//    void connect(List<Long> ids);
//
//    void overrule(List<Long> ids);
//
//    void quash(List<Long> ids);

    /**
     * 检查 抛弃已存在待接驳数据
     *
     * @param dickerDtoList
     * @return
     */
    List<DickerDto> checkForsake(List<DickerDto> dickerDtoList);

    /**
     * 检查状态
     *
     * @param ids
     * @param connectEventEnum
     * @return
     */
    List<ConnectLog> searchAndVerify(List<Long> ids, ConnectEventEnum connectEventEnum);

    void repairSaveBatch(TransferDto transferDto, List<RepairInfo> repairInfoList, TransferLogAddDto transferLogAddDto);

    void inspectionSaveBatch(TransferDto transferDto, List<ProductInfo> productInfoList, TransferLogAddDto transferLogAddDto);

    ConnectLogTriageDto triage(List<ConnectLog> connectLogList);

    void updateStatus(List<ConnectLog> connectLogList, ConnectEventEnum connectEventEnum);

    void handleWarehouse(List<ConnectLog> warehouseList, DeviceInventoryEvent deviceInventoryEvent);

    void handleInspection(List<ProductInfo> productInfoList, ConnectEventEnum connectEventEnum, InspectionStatusEnum inspectionTransferStatusEnum);

    void handleRepair(List<ProductInfo> productInfoList, ConnectEventEnum connectEventEnum, RepairStatusEnum repairTransferStatusEnum);
}
